﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace Proyecta.Proyectos
{
    public partial class Proyectos : System.Web.UI.Page
    {

        private String idProyecto;
        private String uriAccion;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.idProyecto = Request.QueryString["id"];
                this.uriAccion = Request.QueryString["accion"];
                if (this.idProyecto == "" || this.idProyecto == null)
                {
                    Response.Redirect("Index.aspx");                    
                }
                else {                    
                    this.BuscarProyectoID();
                }
            }
        }

        Proyecta.Data.BO.ProyectosBO oProyecto = null;
        Proyecta.Data.DAO.ProyectosDAO oProyectoDao = null;

        public void Action()
        {

            switch(this.uriAccion){
                case "EDITAR":
                    this.Actualizar();
                break;
                case "ELIMINAR":
                    this.Eliminar();
                break;
            }

        }

        private void DataToUi(Object Proyecto) {

            Proyecta.Data.BO.ProyectosBO oProyecto = (Proyecta.Data.BO.ProyectosBO)Proyecto;
            this.txtIdProyecto.Value = oProyecto.idProyecto.ToString();
            this.txtProyecto.Text =oProyecto.Nombre.ToString();
            this.txtProblema.Text = oProyecto.Problema.ToString();
            this.txtPropuesta.Text = oProyecto.Propuesta.ToString();
            this.txtMetrica.Text = oProyecto.Metricas.ToString() ;
            this.txtRiesgos.Text = oProyecto.Riesgos.ToString() ;
            this.txtSegmento.Text = oProyecto.Segmento.ToString();
            this.txtSolucion.Text =oProyecto.Solucion.ToString();
            this.txtFinancimiento.Text = oProyecto.TotalFondear.ToString();
            this.txtFechaCreacion.Text = oProyecto.FechaCreacion.ToString();
            this.txtFechaLimite.Text = oProyecto.FechaLimite.ToString();
            this.cbxCategorias.Text = oProyecto.idCategoria.ToString();

        }

        private Proyecta.Data.BO.ProyectosBO UiToData() {


            Proyecta.Data.BO.ProyectosBO oProyecto = new Proyecta.Data.BO.ProyectosBO();
            oProyecto.idProyecto = Convert.ToInt16(this.txtIdProyecto.Value);
            oProyecto.Nombre= this.txtProyecto.Text;
            oProyecto.Problema = this.txtProblema.Text;
            oProyecto.Propuesta = this.txtPropuesta.Text;
            oProyecto.Metricas = this.txtMetrica.Text;
            oProyecto.Riesgos = this.txtRiesgos.Text;
            oProyecto.Segmento = this.txtSegmento.Text;
            oProyecto.Solucion = this.txtSolucion.Text;
            oProyecto.TotalFondear = Convert.ToDecimal(this.txtFinancimiento.Text);
            oProyecto.FechaCreacion = this.txtFechaCreacion.Text;
            oProyecto.FechaLimite = this.txtFechaLimite.Text;
            oProyecto.idCategoria = Convert.ToInt16(this.cbxCategorias.Text);

            return oProyecto;
        
        }
        
        private Boolean Guardar() {

            oProyecto = new Proyecta.Data.BO.ProyectosBO();
            oProyectoDao = new Proyecta.Data.DAO.ProyectosDAO();
            try
            {
                oProyecto = this.UiToData();
                oProyectoDao.Insertar(oProyecto);
            }catch(Exception Ex){
                return false;
            }

            return true;        
        }

        private Boolean Actualizar(){
            oProyecto = new Proyecta.Data.BO.ProyectosBO();
            oProyectoDao = new Proyecta.Data.DAO.ProyectosDAO();

            try
            {
                oProyecto = this.UiToData();
                oProyectoDao.Modificar(oProyecto);
            }catch(Exception Ex){
                return false;
            }

            return true;
        }

        private Boolean Eliminar() {
            oProyecto = new Proyecta.Data.BO.ProyectosBO();
            oProyectoDao = new Proyecta.Data.DAO.ProyectosDAO();

            oProyecto = this.UiToData();

            oProyectoDao.Modificar(oProyecto);

            return true;
            
        }

        private Boolean BuscarProyectoID() {

            oProyecto = new Proyecta.Data.BO.ProyectosBO();
            oProyectoDao = new Proyecta.Data.DAO.ProyectosDAO();
            oProyecto.idProyecto = Convert.ToInt32(this.idProyecto);
            DataSet dsProyecto;
            dsProyecto = oProyectoDao.MostrarporID(oProyecto);

            oProyecto.idProyecto = Convert.ToInt32(dsProyecto.Tables[0].Rows[0]["IdProyecto"]);
            oProyecto.Calendario = dsProyecto.Tables[0].Rows[0]["Calendario"].ToString();
            if (dsProyecto.Tables[0].Rows[0]["Duracion"] != DBNull.Value)
            oProyecto.Duracion = Convert.ToInt32(dsProyecto.Tables[0].Rows[0]["Duracion"]);
            oProyecto.eliminado = Convert.ToInt32(dsProyecto.Tables[0].Rows[0]["eliminado"]);
            oProyecto.FechaCreacion = dsProyecto.Tables[0].Rows[0]["FechaCreacion"].ToString();
            oProyecto.FechaLimite = dsProyecto.Tables[0].Rows[0]["FechaLimite"].ToString();
            if (dsProyecto.Tables[0].Rows[0]["IdAfiliado"] != DBNull.Value)
            oProyecto.idAfiliado = Convert.ToInt32(dsProyecto.Tables[0].Rows[0]["IdAfiliado"]);
            if (dsProyecto.Tables[0].Rows[0]["IdCategoria"] != DBNull.Value)
            oProyecto.idCategoria = Convert.ToInt32(dsProyecto.Tables[0].Rows[0]["IdCategoria"]);
            if (dsProyecto.Tables[0].Rows[0]["IdUsuario"] != DBNull.Value)
            oProyecto.idUsuario = Convert.ToInt32(dsProyecto.Tables[0].Rows[0]["IdUsuario"]);
            oProyecto.Metricas = dsProyecto.Tables[0].Rows[0]["Metricas"].ToString();
            oProyecto.Nombre = dsProyecto.Tables[0].Rows[0]["Nombre"].ToString();
            oProyecto.Problema = dsProyecto.Tables[0].Rows[0]["Problema"].ToString();
            oProyecto.Propuesta = dsProyecto.Tables[0].Rows[0]["Propuesta"].ToString();
            oProyecto.Riesgos = dsProyecto.Tables[0].Rows[0]["Riesgos"].ToString();
            oProyecto.Segmento = dsProyecto.Tables[0].Rows[0]["Segmento"].ToString();
            oProyecto.Solucion = dsProyecto.Tables[0].Rows[0]["Solucion"].ToString();
            if (dsProyecto.Tables[0].Rows[0]["TotalFondear"] != DBNull.Value)
            oProyecto.TotalFondear = Convert.ToDecimal(dsProyecto.Tables[0].Rows[0]["TotalFondear"]);
            this.DataToUi(oProyecto);

            return true;
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("Index.aspx");
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {            
            this.Action();
        }
        
    }
}